package com.wangyk.rabbitmqconsole.receiver;

import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 接收MQ消息
 */
@Component
public class MqReceiver
{
    /**
     * 1.第一种方式：使用@RabbitListener创建队列，需要在客户端添加队列。
     */
    @RabbitListener(queues = "myQueue")
    public void process(String message)
    {
        System.out.println(message);
    }

    /**
     * 2.第二种方式：使用@RabbitListener创建队列，如果客户端没有队列，则会自动创建。
     */
    @RabbitListener(queuesToDeclare = @Queue("myQueueTwo"))
    public void processQueue(String message)
    {
        System.out.println(message);
    }

    /**
     * 3.第三种方式：使用@RabbitListener创建队列，将queue和exchange绑定。
     * 使用Exchange进行消息的分组
     */
    @RabbitListener(bindings = @QueueBinding(value = @Queue("bindQueue"), exchange = @Exchange("bindExchange")))
    public void processBindQueue(String message)
    {
        System.out.println(message);
    }

    /**
     * 4.第四种方式：使用@RabbitListener创建队列，将queue和exchange绑定。
     * 使用Exchange进行消息的分组
     */
    @RabbitListener(bindings = @QueueBinding(exchange = @Exchange("myOrder"), key = "fruit", value = @Queue("fruitQueue")))
    public void processFruitQueue(String message)
    {
        System.out.println("fruit:" + message);
    }

    @RabbitListener(bindings = @QueueBinding(exchange = @Exchange("myOrder"), key = "computer", value = @Queue("computerQueue")))
    public void processComputerQueue(String message)
    {
        System.out.println("computer:" + message);
    }
}
